home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-09-12 | 2.0 KB | 65 lines | [TEXT/CCL2] |
- ;eval-client
- (require :mactcp)
-
- (defparameter *port-for-eval-server* 5555)
- (defparameter *eval-server-client-plist* nil)
-
- (defun request-eval-open-stream (client-stream string)
- (ccl::telnet-write-line client-stream string)
- (values (ccl::telnet-read-line client-stream))
- )
-
- (defun start-eval-client (server-string client-name)
- (let ((client-stream
- (ignore-errors (open-tcp-stream server-string *port-for-eval-server*))))
- (cond (client-stream
- (setf (getf *eval-server-client-plist* client-name) client-stream)
- (values client-stream :ok))
- (t (values nil :server-open-failed)))))
-
- (defun stop-eval-client (client-name)
- (close (getf *eval-server-client-plist* client-name))
- (remf *eval-server-client-plist* client-name)
- )
-
- (defun request-eval (s-expression client-name)
- (let ((stream (getf *eval-server-client-plist* client-name)))
- (cond ((null stream)
- (values nil :server-not-found))
- ;stream found
- ((eql :ESTABLISHED (ccl::tcp-state-name (ccl::tcp-connection-state stream)))
- (values
- (read-from-string
- (request-eval-open-stream
- stream
- (format nil "~S" s-expression)))
- :ok))
- (T (values nil :server-in-bad-state)))))
-
- (defun stop-all-eval-clients ()
- (let ((servers nil))
- (do ((s *eval-server-client-plist* (cddr s)))
- ((endp s))
- (push (first s) servers))
- (dolist (s servers)
- (stop-eval-client s)))
- )
-
- #|
- (start-eval-client "132.187.103.165" :the-first-client)
- (start-eval-client "132.187.103.165" :the-second-client)
-
- (request-eval '(+ 3 4 5) :the-first-client)
-
- (request-eval '(progn
- (defun fakul (n)
- (if (<= n 1)
- 1
- (* n (fakul (1- n)))))
- (fakul 10))
- :the-second-client)
-
- (request-eval '(fakul 100) :the-second-client)
- (request-eval '(faku1 100) :the-second-client)
- (stop-all-eval-clients)
- |#